package JVM.第03篇_运行时内存篇;

/**
 * 堆heap  有垃圾回收  存储的是  一切new出来的对象
 *
 * 存储在JVM中的Java对象可以被划分为两类:
 * ● 一类是生命周期较短的瞬时对象，这类对象的创建和消亡都非常迅速
 * ● 另外一类对象的生命周期却非常长，在某些极端的情况下还能够与JVM的生命周期保持一致。
 *
 * ●几乎所有的Java对象都是在Eden区被new出来的。
 * ●绝大部分的Java对象的销毁都在新生代进行了
 * ●IBM公司的专门研究表明，新生代中80%的对象都是“朝生夕死”的。
 *
 *   物理上的堆只有新生区和养老区    概念上有永久代（jdk7） /元空间（jdk8）
 *                 <
 *                 | 1/3 1: 新生区(Young)(共十份)  new   Eden ：GC==YGC==轻GC（伊甸区和from）满了
 *                 |       8份   1.1:  伊甸园区（Eden Space）满了 （死了一大部分（活得年龄+1））->
 *                 |       1份   1.2:  幸存者0区(S0  from) （每一次GC 谁存活(活得年龄+1)放在from） ->
 *                 |       1份   1.3:  幸存者1区(S1  to（谁空谁是to）)   （年龄为15（默认）的） ->养老区
 *   7 堆 heap    <  2/3 2：养老区(old) （再满了）   Full GC==FGC  （筛选(全筛选包括young)）
 *                 |        一直满  实在没办法 出现OOM异常(java.lang.OutOfMemoryError)堆内存不足
 *                 |
 *                 |    3：永久代（jdk7） /元空间（jdk8）
 *                 |         //jdk7  （其实在heap 但他自己不认为）
 *                 |         //java8 以后原空间不在jvm了  在使用本机物理机
 *                 |        永久代是堆的一部分，和新生代，老年代地址是连续的，而元空间属于本地内存
 *                 |        元空间存储类的元信息，静态变量和常量池等并入堆中。相当于永久代的数据被分到了堆和元空间中
 *                 <
 */
public class E1_堆的内存结构 {

}
